home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok82 / plot / source / mymathliblong.def < prev    next >
Encoding:
Modula Definition  |  1993-11-04  |  7.2 KB  |  156 lines

  1. DEFINITION MODULE MyMathLibLong;
  2. (*
  3.   Created:   17.11.87
  4.   Changed:   25.1.88/10.02.88/23.8.88/29.9.88 by
  5.              Stefan Salewski
  6.              Stolper Weg 3
  7.              2160 Stade   West-Germany
  8.              Tel: 04141/61130
  9.              
  10.   Note: compiled with AMIGA Modula-2 System by AMSoft from 5.5.88
  11.    
  12.   This Module may be freely copied. But please
  13.   leave my name in. Thanks....Stefan  
  14. *)
  15.  
  16.   CONST 
  17.     Pi=3.141592653589793;
  18.     PiHalbe=Pi*0.5;
  19.     E=2.7182818284590452;
  20.   TYPE AngleUnit=(rad,deg,gon);
  21.   VAR
  22.     unit:AngleUnit;     (* Einheit, die bei trigonomischen Berechnungen
  23.                            verwendet wird. Voreinstellung: unit:=rad
  24.                            Soll statt in Bogenmass in Grad oder Neugrad 
  25.                            gerechnet werden, so muss unit entsprechend
  26.                            gesetzt werden *)
  27.     errorNumber:CARDINAL;(*Kann zur Ermittlung eines Fehlers verwendet werden
  28.                            Jetzt wird errorNumber nur noch gesetzt, wenn
  29.                            Fehler auftreten, das setzen von errornumber auf
  30.                            0 durch die Funktionsprozeduren entfaellt.
  31.                            Dadurch wird verhindert, das errorNumber z.B. nach
  32.                            folgender Berechnung den falschen Wert 0 hat
  33.                            sqr(sqrt(-4))
  34.                            Wenn man Fehler erwartet, muss man also vor
  35.                            Berechnungen errorNumber auf 0 setzen und
  36.                            nach der Berechnung abfragen. Bei laengeren
  37.                            ausdruecken erhaelt man immer die Nummer des
  38.                            letzten Fehlers.
  39.                          *)
  40.     epsilon:LONGREAL; (* Bestimmt die Genauigkeit der Berechnung von sin,
  41.                          exp,ln usw. Voreistellung: epsilon:=1.0E-20 entspricht
  42.                          maximaler Genauigkeit,also mindestens 14 Dezimalstellen
  43.                          epsilon kann fuer groessere Geschwindigkeit bis auf
  44.                          1.0E-14 vergroessert werden, dann sind noch etwa 10
  45.                          Stellen korrekt, was der Rechnengenauigkeit von dem
  46.                          Standartmodul MathLibLong entspricht *)
  47.     
  48. (* 
  49.   Die Zahlen zwischen '*' und ':' bezeichen jeweils den Wert, den errorNumber
  50.   bekommt,wenn ein Fehler auftritt. FormelAusFText liefert dazu den Fehlertext.
  51. *)
  52.  
  53. PROCEDURE neutraleFunc(x:LONGREAL):LONGREAL; 
  54. (* Gibt x unveraendert zurueck                                              *)
  55.  
  56. PROCEDURE abs(x:LONGREAL):LONGREAL;
  57. (* entspricht ABS(x), kann aber als Funktion uebergeben werden              *)
  58.  
  59. PROCEDURE fac(x:LONGREAL):LONGREAL; 
  60. (* Fakultaet fuer ganze Zahlen 0 <= n <= 170                                *)
  61.                                     (*75:Argument zu gross (x<710           *)
  62.                                     (*76:fac(x) undef fuer x<0              *)
  63.                                     (*77:fac(x) nur def. fuer x ganz        *)
  64.  
  65. PROCEDURE sqr(x:LONGREAL):LONGREAL; 
  66. (* Quadrat x:=x*x                                                           *)
  67.                                     (* 72:Argument >= 1E154                 *)
  68.  
  69. PROCEDURE power(x,y:LONGREAL):LONGREAL;
  70. (* Raise x to the y th power                                                *)
  71.                                 (* 3:0^negative Zahl ist undefiniert        *)
  72.                                 (* 4:Neg.Zahl hoch gebr.Zahl ist undefiniert*)
  73.  
  74. PROCEDURE tan(x:LONGREAL):LONGREAL;
  75. (* Tangens = sin(x)/cos(x)                                                  *)
  76.                                           (* 5:tan(n*(Pi/2) ist undefiniert *)
  77.  
  78. PROCEDURE sin(x:LONGREAL):LONGREAL;
  79. (* Sinus                                                                    *)
  80.  
  81. PROCEDURE cos(x:LONGREAL):LONGREAL;
  82. (* Cosinus                                                                  *)
  83.  
  84. PROCEDURE cot(x:LONGREAL):LONGREAL;
  85. (* Kotangens = 1/tan(x)                                                     *)
  86.                                               (* 6:cot(n*Pi ist undefiniert *)
  87.  
  88. PROCEDURE sec(x:LONGREAL):LONGREAL;
  89. (* Sekans = 1/cos(x)                                                        *)
  90.                                               (* 7:sec hat Pol bei x=n*Pi/2 *)
  91.  
  92. PROCEDURE cosec(x:LONGREAL):LONGREAL;
  93. (* Kosekans =1/sin(x)                                                       *)
  94.                                               (* 8:cosec hat Pol bei x=n*Pi *)
  95.  
  96. PROCEDURE arcsin(x:LONGREAL):LONGREAL;
  97. (* ArcusSinus= Umkehrfunktion des Sinus  -1<= x <= +1                       *)
  98.                                       (* 9:arcsin(x)undefiniert fuer |x|>0  *)
  99.  
  100. PROCEDURE arccos(x:LONGREAL):LONGREAL;
  101. (* ArcusCosinus = Umkehrfunktion des Cosinus -1 <=x <= +1                   *)
  102.                                      (* 10:arccos(x) undefiniert fuer |x|>0 *)
  103.  
  104. PROCEDURE arctan(x:LONGREAL):LONGREAL; 
  105. (* ArcusTangen = Umkehrfunktion des Tangens                                 *)
  106.  
  107. PROCEDURE arccot(x:LONGREAL):LONGREAL;
  108. (* ArcusKotangens = Umkehrfunktion des Kotangens                            *)
  109.  
  110. PROCEDURE exp(x:LONGREAL):LONGREAL;
  111. (* Exponentialfunktion                                                      *)
  112.                                            (* 11:exp(x) zu gross fuer x>710 *)
  113.  
  114. PROCEDURE ln(x:LONGREAL):LONGREAL;
  115. (* Natuerlicher Logarithmus zur Basis e=2.7182818                           *)
  116.                                           (* 12:ln(x) undefiniert fuer x<=0 *)
  117.  
  118. PROCEDURE log(x:LONGREAL):LONGREAL;
  119. (* Logarithmus zur Basis 10                                                 *)
  120.                                          (* 13:log(x) undefiniert fuer x<=0 *)
  121.  
  122. PROCEDURE sinh(x:LONGREAL):LONGREAL;
  123. (* Sinus Hyperbolicus  bzw. HyperbelSinus                                   *)
  124.  
  125. PROCEDURE cosh(x:LONGREAL):LONGREAL;
  126. (* Cosinus Hyperbolicus bzw. HyperbelCosinus                                *)
  127.  
  128. PROCEDURE tanh(x:LONGREAL):LONGREAL;
  129. (* Tangens Hyperbolicus bzw. HyperbelTangens                                *)
  130.  
  131. PROCEDURE coth(x:LONGREAL):LONGREAL;
  132. (* Cotanges Hyperbolicus bzw. HyperbelCotangens                             *)
  133.                                               (* 14:coth(x) hat Pol bei x=0 *)
  134.  
  135. PROCEDURE arsinh(x:LONGREAL):LONGREAL;
  136. (* AreaSinus = Umkehrfunktion von sinh(x)                                   *)
  137.  
  138. PROCEDURE arcosh(x:LONGREAL):LONGREAL;
  139. (* AreaCosinus = Umkehrfunktion von cosh(x)                                 *)
  140.                                        (* 15:arcosh(x) undefiniert fuer x>1 *)
  141.  
  142. PROCEDURE artanh(x:LONGREAL):LONGREAL;
  143. (* AreaTangens = Umkehrfunktion tanh(x)                                     *)
  144.                                          (* 16:artanh(x) undefi fuer |x|>=1 *)
  145.  
  146. PROCEDURE sqrt(x:LONGREAL):LONGREAL;
  147. (* AreaTangens = Umkehrfunktion tanh(x)                                     *)
  148.                                          (* 17:sqrt(x) undefiniert fuer x<0 *)
  149. PROCEDURE arcoth(x:LONGREAL):LONGREAL;
  150. (* Areacotangens = Umkehrfunktion von coth                                  *)
  151.                                   (* 19:arctan(x) undefiniert fuer |x|<=1.0 *)
  152. PROCEDURE int(x:LONGREAL):LONGREAL;
  153. (* Liefert den ganzaligen Anteil von x. int(4.3)=4; int(-4.3)=-4            *)
  154.                           (* 20:int(x) |x| muss kleiner als 2147483648 sein *)
  155. END MyMathLibLong.def
  156.